
%% bare_conf.tex
%% V1.3
%% 2007/01/11
%% by Michael Shell
%% See:
%% http://www.michaelshell.org/
%% for current contact information.
%%
%% This is a skeleton file demonstrating the use of IEEEtran.cls
%% (requires IEEEtran.cls version 1.7 or later) with an IEEE conference paper.
%%
%% Support sites:
%% http://www.michaelshell.org/tex/ieeetran/
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
%% and
%% http://www.ieee.org/

%%*************************************************************************
%% Legal Notice:
%% This code is offered as-is without any warranty either expressed or
%% implied; without even the implied warranty of MERCHANTABILITY or
%% FITNESS FOR A PARTICULAR PURPOSE! 
%% User assumes all risk.
%% In no event shall IEEE or any contributor to this code be liable for
%% any damages or losses, including, but not limited to, incidental,
%% consequential, or any other damages, resulting from the use or misuse
%% of any information contained here.
%%
%% All comments are the opinions of their respective authors and are not
%% necessarily endorsed by the IEEE.
%%
%% This work is distributed under the LaTeX Project Public License (LPPL)
%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
%% distributed and modified. A copy of the LPPL, version 1.3, is included
%% in the base LaTeX documentation of all distributions of LaTeX released
%% 2003/12/01 or later.
%% Retain all contribution notices and credits.
%% ** Modified files should be clearly indicated as such, including  **
%% ** renaming them and changing author support contact information. **
%%
%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex,
%%                    bare_conf.tex, bare_jrnl.tex, bare_jrnl_compsoc.tex
%%*************************************************************************

% *** Authors should verify (and, if needed, correct) their LaTeX system  ***
% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
% *** with production work. IEEE's font choices can trigger bugs that do  ***
% *** not appear when using other class files.                            ***
% The testflow support page is at:
% http://www.michaelshell.org/tex/testflow/



% Note that the a4paper option is mainly intended so that authors in
% countries using A4 can easily print to A4 and see how their papers will
% look in print - the typesetting of the document will not typically be
% affected with changes in paper size (but the bottom and side margins will).
% Use the testflow package mentioned above to verify correct handling of
% both paper sizes by the user's LaTeX system.
%
% Also note that the "draftcls" or "draftclsnofoot", not "draft", option
% should be used if it is desired that the figures are to be displayed in
% draft mode.
%
\documentclass[conference]{IEEEtran}

% Add the compsoc option for Computer Society conferences.
%
% If IEEEtran.cls has not been installed into the LaTeX system files,
% manually specify the path to it like:
% \documentclass[conference]{../sty/IEEEtran}


% Some very useful LaTeX packages include:
% (uncomment the ones you want to load)


% *** MISC UTILITY PACKAGES ***
%
%\usepackage{ifpdf}
% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
% compilation based on whether the output is pdf or dvi.
% usage:
% \ifpdf
%   % pdf code
% \else
%   % dvi code
% \fi
% The latest version of ifpdf.sty can be obtained from:
% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/
% Also, note that IEEEtran.cls V1.7 and later provides a builtin
% \ifCLASSINFOpdf conditional that works the same way.
% When switching from latex to pdflatex and vice-versa, the compiler may
% have to be run twice to clear warning/error messages.






% *** CITATION PACKAGES ***
%
%\usepackage{cite}
% cite.sty was written by Donald Arseneau
% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
% \cite{} output to follow that of IEEE. Loading the cite package will
% result in citation numbers being automatically sorted and properly
% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
% \cite will automatically add leading space, if needed. Use cite.sty's
% noadjust option (cite.sty V3.8 and later) if you want to turn this off.
% cite.sty is already installed on most LaTeX systems. Be sure and use
% version 4.0 (2003-05-27) and later if using hyperref.sty. cite.sty does
% not currently provide for hyperlinked citations.
% The latest version can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/
% The documentation is contained in the cite.sty file itself.






% *** GRAPHICS RELATED PACKAGES ***
%
\ifCLASSINFOpdf
  % \usepackage[pdftex]{graphicx}
  % declare the path(s) where your graphic files are
  % \graphicspath{{../pdf/}{../jpeg/}}
  % and their extensions so you won't have to specify these with
  % every instance of \includegraphics
  % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
\else
  % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
  % will default to the driver specified in the system graphics.cfg if no
  % driver is specified.
  % \usepackage[dvips]{graphicx}
  % declare the path(s) where your graphic files are
  % \graphicspath{{../eps/}}
  % and their extensions so you won't have to specify these with
  % every instance of \includegraphics
  % \DeclareGraphicsExtensions{.eps}
\fi
% graphicx was written by David Carlisle and Sebastian Rahtz. It is
% required if you want graphics, photos, etc. graphicx.sty is already
% installed on most LaTeX systems. The latest version and documentation can
% be obtained at: 
% http://www.ctan.org/tex-archive/macros/latex/required/graphics/
% Another good source of documentation is "Using Imported Graphics in
% LaTeX2e" by Keith Reckdahl which can be found as epslatex.ps or
% epslatex.pdf at: http://www.ctan.org/tex-archive/info/
%
% latex, and pdflatex in dvi mode, support graphics in encapsulated
% postscript (.eps) format. pdflatex in pdf mode supports graphics
% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats
% which can result in "jaggedy"/blurry rendering of lines and letters as
% well as large increases in file sizes.
%
% You can find documentation about the pdfTeX application at:
% http://www.tug.org/applications/pdftex





% *** MATH PACKAGES ***
%
%\usepackage[cmex10]{amsmath}
% A popular package from the American Mathematical Society that provides
% many useful and powerful commands for dealing with mathematics. If using
% it, be sure to load this package with the cmex10 option to ensure that
% only type 1 fonts will utilized at all point sizes. Without this option,
% it is possible that some math symbols, particularly those within
% footnotes, will be rendered in bitmap form which will result in a
% document that can not be IEEE Xplore compliant!
%
% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000
% thus preventing page breaks from occurring within multiline equations. Use:
%\interdisplaylinepenalty=2500
% after loading amsmath to restore such page breaks as IEEEtran.cls normally
% does. amsmath.sty is already installed on most LaTeX systems. The latest
% version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/





% *** SPECIALIZED LIST PACKAGES ***
%
%\usepackage{algorithmic}
% algorithmic.sty was written by Peter Williams and Rogerio Brito.
% This package provides an algorithmic environment fo describing algorithms.
% You can use the algorithmic environment in-text or within a figure
% environment to provide for a floating algorithm. Do NOT use the algorithm
% floating environment provided by algorithm.sty (by the same authors) or
% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated
% algorithm float types and packages that provide these will not provide
% correct IEEE style captions. The latest version and documentation of
% algorithmic.sty can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/
% There is also a support site at:
% http://algorithms.berlios.de/index.html
% Also of interest may be the (relatively newer and more customizable)
% algorithmicx.sty package by Szasz Janos:
% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/




% *** ALIGNMENT PACKAGES ***
%
%\usepackage{array}
% Frank Mittelbach's and David Carlisle's array.sty patches and improves
% the standard LaTeX2e array and tabular environments to provide better
% appearance and additional user controls. As the default LaTeX2e table
% generation code is lacking to the point of almost being broken with
% respect to the quality of the end results, all users are strongly
% advised to use an enhanced (at the very least that provided by array.sty)
% set of table tools. array.sty is already installed on most systems. The
% latest version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/required/tools/


%\usepackage{mdwmath}
%\usepackage{mdwtab}
% Also highly recommended is Mark Wooding's extremely powerful MDW tools,
% especially mdwmath.sty and mdwtab.sty which are used to format equations
% and tables, respectively. The MDWtools set is already installed on most
% LaTeX systems. The lastest version and documentation is available at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/mdwtools/


% IEEEtran contains the IEEEeqnarray family of commands that can be used to
% generate multiline equations as well as matrices, tables, etc., of high
% quality.


%\usepackage{eqparbox}
% Also of notable interest is Scott Pakin's eqparbox package for creating
% (automatically sized) equal width boxes - aka "natural width parboxes".
% Available at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/





% *** SUBFIGURE PACKAGES ***
%\usepackage[tight,footnotesize]{subfigure}
% subfigure.sty was written by Steven Douglas Cochran. This package makes it
% easy to put subfigures in your figures. e.g., "Figure 1a and 1b". For IEEE
% work, it is a good idea to load it with the tight package option to reduce
% the amount of white space around the subfigures. subfigure.sty is already
% installed on most LaTeX systems. The latest version and documentation can
% be obtained at:
% http://www.ctan.org/tex-archive/obsolete/macros/latex/contrib/subfigure/
% subfigure.sty has been superceeded by subfig.sty.



%\usepackage[caption=false]{caption}
%\usepackage[font=footnotesize]{subfig}
% subfig.sty, also written by Steven Douglas Cochran, is the modern
% replacement for subfigure.sty. However, subfig.sty requires and
% automatically loads Axel Sommerfeldt's caption.sty which will override
% IEEEtran.cls handling of captions and this will result in nonIEEE style
% figure/table captions. To prevent this problem, be sure and preload
% caption.sty with its "caption=false" package option. This is will preserve
% IEEEtran.cls handing of captions. Version 1.3 (2005/06/28) and later 
% (recommended due to many improvements over 1.2) of subfig.sty supports
% the caption=false option directly:
%\usepackage[caption=false,font=footnotesize]{subfig}
%
% The latest version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/
% The latest version and documentation of caption.sty can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/caption/




% *** FLOAT PACKAGES ***
%
%\usepackage{fixltx2e}
% fixltx2e, the successor to the earlier fix2col.sty, was written by
% Frank Mittelbach and David Carlisle. This package corrects a few problems
% in the LaTeX2e kernel, the most notable of which is that in current
% LaTeX2e releases, the ordering of single and double column floats is not
% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
% single column figure to be placed prior to an earlier double column
% figure. The latest version and documentation can be found at:
% http://www.ctan.org/tex-archive/macros/latex/base/



%\usepackage{stfloats}
% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
% the ability to do double column floats at the bottom of the page as well
% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
% LaTeX2e). It also provides a command:
%\fnbelowfloat
% to enable the placement of footnotes below bottom floats (the standard
% LaTeX2e kernel puts them above bottom floats). This is an invasive package
% which rewrites many portions of the LaTeX2e float routines. It may not work
% with other packages that modify the LaTeX2e float routines. The latest
% version and documentation can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/
% Documentation is contained in the stfloats.sty comments as well as in the
% presfull.pdf file. Do not use the stfloats baselinefloat ability as IEEE
% does not allow \baselineskip to stretch. Authors submitting work to the
% IEEE should note that IEEE rarely uses double column equations and
% that authors should try to avoid such use. Do not be tempted to use the
% cuted.sty or midfloat.sty packages (also by Sigitas Tolusis) as IEEE does
% not format its papers in such ways.





% *** PDF, URL AND HYPERLINK PACKAGES ***
%
%\usepackage{url}
% url.sty was written by Donald Arseneau. It provides better support for
% handling and breaking URLs. url.sty is already installed on most LaTeX
% systems. The latest version can be obtained at:
% http://www.ctan.org/tex-archive/macros/latex/contrib/misc/
% Read the url.sty source comments for usage information. Basically,
% \url{my_url_here}.





% *** Do not adjust lengths that control margins, column widths, etc. ***
% *** Do not use packages that alter fonts (such as pslatex).         ***
% There should be no need to do such things with IEEEtran.cls V1.6 and later.
% (Unless specifically asked to do so by the journal or conference you plan
% to submit to, of course. )

\usepackage{mathtools}
\usepackage{dsfont}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage[pdftex]{graphicx}
\usepackage[]{graphicx}
\usepackage{float}
\usepackage{url}
%\graphicspath{{fig/},{fig/Mocap/},{fig/Creating/},{fig/Papers/},{fig/Method/},{fig/Results/},{fig/Results/punches/}}
%\usepackage{subfig}
%\usepackage{caption}

% correct bad hyphenation here
\hyphenation{op-tical net-works semi-conduc-tor}


\begin{document}
%
% paper title
% can use linebreaks \\ within to get better formatting as desired
\title{Um Modelo de Contato Simplificado para Tratamento de Equilíbrio de Personagens Virtuais Bípedes\\ \emph{A Simplified Contact Model for Treating the Balance of Biped Virtual Characters}}

\author{\IEEEauthorblockN{Danilo Borges da Silva, Creto Augusto Vidal, Joaquim Bento Cavalcante Neto}
\IEEEauthorblockA{Departamento de Computação\\
Universidade Federal do Ceará\\
Fortaleza, CE, Brasil\\
Email: \{danilobs, cvidal, joaquimb\}@lia.ufc.br}
\and
\IEEEauthorblockN{Rubens Fernandes Nunes}
\IEEEauthorblockA{Departamento de Computação\\
Universidade Federal do Ceará\\
Quixadá, CE, Brasil\\
Email: rubens@lia.ufc.br}
}


% author names and affiliations
% use a multiple column layout for up to three different
% affiliations

%\author{\IEEEauthorblockN{Michael Shell}
%\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\
%Georgia Institute of Technology\\
%Atlanta, Georgia 30332--0250\\
%Email: http://www.michaelshell.org/contact.html}
%\and
%\IEEEauthorblockN{Homer Simpson}
%\IEEEauthorblockA{Twentieth Century Fox\\
%Springfield, USA\\
%Email: homer@thesimpsons.com}
%\and
%\IEEEauthorblockN{James Kirk\\ and Montgomery Scott}
%\IEEEauthorblockA{Starfleet Academy\\
%San Francisco, California 96678-2391\\
%Telephone: (800) 555--1212\\
%Fax: (888) 555--1212}}

% conference papers do not typically use \thanks and this command
% is locked out in conference mode. If really needed, such as for
% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts
% after \documentclass

% for over three affiliations, or if they all won't fit within the width
% of the page, use this alternative format:
% 
%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1},
%Homer Simpson\IEEEauthorrefmark{2},
%James Kirk\IEEEauthorrefmark{3}, 
%Montgomery Scott\IEEEauthorrefmark{3} and
%Eldon Tyrell\IEEEauthorrefmark{4}}
%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\
%Georgia Institute of Technology,
%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html}
%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\
%Email: homer@thesimpsons.com}
%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\
%Telephone: (800) 555--1212, Fax: (888) 555--1212}
%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}}




% use for special paper notices
%\IEEEspecialpapernotice{(Invited Paper)}




% make the title area
\maketitle



\begin{abstract}
%\boldmath

Neste trabalho, é apresentado um modelo para tratamento de equilíbrio baseado em física para personagens bípedes. Controladores Proporcionais-Derivativos (PD) são usados
para imitar as características angulares das juntas, enquanto o controle de equilíbrio é feito através da Jacobiana Transposta.
A Jacobiana é construída baseada no \emph{momentum} (angular e linear) total do personagem, relativo ao seu Centro de Massa (COM), permitindo que o controle de
equilíbrio envolva todas as suas partes, como um todo, e não apenas seus membros inferiores.
O modelo de contato proposto confere ao personagem bastante estabilidade, facilitando o trabalho do controlador e permitindo uma fácil inicialização da simulação.
%balancear estabilidade e corretude física da simulação
Além disso, caso seja de sua preferência,
é permitido ao animador sacrificar um pouco da corretude física da simulação em troca de uma estabilidade ainda maior, %de acordo com o propósito da animação,
o que consiste em uma ferramenta bastante útil na prática.
O sistema não usa otimização e é simples de implementar. A robustez do controlador é demonstrada através de uma diversidade de testes, em que o personagem se mostra capaz
tanto de se adaptar a intervenções externas do ambiente quanto de imitar movimentos capturados, usados diretamente sem qualquer tipo de adaptação. %ao sistema usado.

Palavras-Chave -- Interação 3D; Humanos virtuais e avatares; Animação baseada em física; Controladores;

\emph{Abstract} -- \emph{
In this work, we present a physically-based model for maintaining the equilibrium of biped characters. We use Proportional-Derivative (PD)
Controllers to mimic the characteristics of angular joints, and deal with the equilibrium through a method that uses the transpose of the 
Jacobian matrix that relates the angular and linear momentum at the Center of Mass (COM) of the character’s body to the corresponding quantities
at all its members, which are treated as end effectors. This is a significant difference when compared with the methods from the literature, which
deal only with the lower members of the character for treating equilibrium. Also, we propose a contact model for treating the interaction between
the feet and the ground that confers great stability to the character and makes it easier for the controller and for the starting of the 
simulation. It also makes it convenient for the animator to adjust the model so as to consider a trade-off between more physical realism and 
more stability. The system does not use optimization and is simple to implement. The robustness of the controller is demonstrated through a 
series of tests that show that the character is able to adapt its posture and maintain equilibrium either under the influence of external actions
from the environment or when it follows a MoCap animation without requiring any type of model adaptation.
%This work presents a model for controlling physics-based bipeds
% characters in a simulated environment with treatment of balance. Controllers Proportional-Derivative (PD) are used
%to mimic angular characteristics of the joints, with specific form of Jacobian Transpose for balance control.
%The Jacobian is constructed based on linear and angular momenta of the character related to the Center of Mass (COM) of the character, 
%allowing control of balance involves all its parts, as a whole, not just your legs.
%A proposed model of contact gives the character enough stability, facilitating the work of the controller and allows easy initialization of the simulation.
%Also, if prefer, is allowed to animator sacrifice a little of physical correctness of simulation in exchange for greater stability,
%which consists of a very useful tool in practice.
%The system does not require optimization and is simple to implement.
%The robustness of the controller is demonstrated by a variety of tests, in which the character can be capable 
%so much adapt to the environment external interventions like mimic movements captured used directly without preprocessing.
}
\end{abstract}

\begin{keywords}
  3D interaction; Virtual humans and avatars; Animation physics-based; Controllers;
\end{keywords}

% IEEEtran.cls defaults to using nonbold math in the Abstract.
% This preserves the distinction between vectors and scalars. However,
% if the conference you are submitting to favors bold math in the abstract,
% then you can use LaTeX's standard command \boldmath at the very start
% of the abstract to achieve this. Many IEEE journals/conferences frown on
% math in the abstract anyway.

% no keywords




% For peer review papers, you can put extra information on the cover
% page as needed:
% \ifCLASSOPTIONpeerreview
% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
% \fi
%
% For peerreview papers, this IEEEtran command inserts a page break and
% creates the second title. It will be ignored for other modes.
\IEEEpeerreviewmaketitle

%\section{Introdução}
% no \IEEEPARstart
%This demo file is intended to serve as a ``starter file''
%for IEEE conference papers produced under \LaTeX\ using
%IEEEtran.cls version 1.7 and later.

% You must have at least 2 lines in the paragraph with the drop letter
% (should never be an issue)
%I wish you the best of success.

%\hfill mds
 
%\hfill January 11, 2007

% An example of a floating figure using the graphicx package.
% Note that \label must occur AFTER (or within) \caption.
% For figures, \caption should occur after the \includegraphics.
% Note that IEEEtran v1.7 and later has special internal code that
% is designed to preserve the operation of \label within \caption
% even when the captionsoff option is in effect. However, because
% of issues like this, it may be the safest practice to put all your
% \label just after \caption rather than within \caption{}.
%
% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
% option should be used if it is desired that the figures are to be
% displayed while in draft mode.
%
%\begin{figure}[!t]
%\centering
%\includegraphics[width=2.5in]{myfigure}
% where an .eps filename suffix will be assumed under latex, 
% and a .pdf suffix will be assumed for pdflatex; or what has been declared
% via \DeclareGraphicsExtensions.
%\caption{Simulation Results}
%\label{fig_sim}
%\end{figure}

% Note that IEEE typically puts floats only at the top, even when this
% results in a large percentage of a column being occupied by floats.


% An example of a double column floating figure using two subfigures.
% (The subfig.sty package must be loaded for this to work.)
% The subfigure \label commands are set within each subfloat command, the
% \label for the overall figure must come after \caption.
% \hfil must be used as a separator to get equal spacing.
% The subfigure.sty package works much the same way, except \subfigure is
% used instead of \subfloat.
%
%\begin{figure*}[!t]
%\centerline{\subfloat[Case I]\includegraphics[width=2.5in]{subfigcase1}%
%\label{fig_first_case}}
%\hfil
%\subfloat[Case II]{\includegraphics[width=2.5in]{subfigcase2}%
%\label{fig_second_case}}}
%\caption{Simulation results}
%\label{fig_sim}
%\end{figure*}
%
% Note that often IEEE papers with subfigures do not employ subfigure
% captions (using the optional argument to \subfloat), but instead will
% reference/describe all of them (a), (b), etc., within the main caption.


% An example of a floating table. Note that, for IEEE style tables, the 
% \caption command should come BEFORE the table. Table text will default to
% \footnotesize as IEEE normally uses this smaller font for tables.
% The \label must come after \caption as always.
%
%\begin{table}[!t]
%% increase table row spacing, adjust to taste
%\renewcommand{\arraystretch}{1.3}
% if using array.sty, it might be a good idea to tweak the value of
% \extrarowheight as needed to properly center the text within the cells
%\caption{An Example of a Table}
%\label{table_example}
%\centering
%% Some packages, such as MDW tools, offer better commands for making tables
%% than the plain LaTeX2e tabular which is used here.
%\begin{tabular}{|c||c|}
%\hline
%One & Two\\
%\hline
%Three & Four\\
%\hline
%\end{tabular}
%\end{table}


% Note that IEEE does not put floats in the very first column - or typically
% anywhere on the first page for that matter. Also, in-text middle ("here")
% positioning is not used. Most IEEE journals/conferences use top floats
% exclusively. Note that, LaTeX2e, unlike IEEE journals/conferences, places
% footnotes above bottom floats. This can be corrected via the \fnbelowfloat
% command of the stfloats package.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Visao geral

\begin{figure}[thbp]
\centering
\includegraphics[width=9cm]{images/PefirmeXPedeslizando.png}
\caption{Modelo de contato do pé de apoio. (a) O modelo de contato simplificado proposto aumenta a estabilidade da interação do pé com o chão, permitindo que o pé de apoio se mantenha firme,
         mesmo quando a geometria usada na simulação não é adequada.
         (b) Sem o modelo proposto, o torque aplicado ao pé não é compensado. Nesse caso, controladores mais complicados, envolvendo otimização \cite{bib:Macchietto09} \cite{bib:Geijtenbeek12},
         seriam exigidos.}
\label{fig:PefirmeXPedeslizando}
\end{figure}

\section{Introdução}
% no \IEEEPARstart
%This demo file is intended to serve as a ``starter file''
%for IEEE conference papers produced under \LaTeX\ using
%IEEEtran.cls version 1.7 and later.

Na área de controle de movimento humano baseado em física, os personagens simulados geralmente consistem de estruturas de
corpos (\emph{links}) rígidos articulados com atuadores angulares internos localizados em suas juntas.
Mais especificamente, seus pés são também representados de maneira bastante simplificada, geralmente através de paralelepípedos rígidos,
gerando uma interação com o chão bastante descontínua.
Considerando essa modelagem suficiente para capturar os aspectos fundamentais do sistema musculoesqueletal humano, pesquisadores têm
desenvolvido controladores capazes de executar várias tarefas envolvendo equilíbrio \cite{bib:GeijtenbeekState12}.
Embora esses controladores tenham funcionado com sucesso para seus propósitos, essa modelagem simplificada ainda não consegue atingir o mesmo nível de
habilidade que o corpo humano real.
%Como um indício desse fato, pode-se dizer que uma tendência em se investir em modelagens mais robustas esteja surgindo.
Como uma evidência desse fato, modelagens mais robustas têm sido propostas para personagens simulados \cite{bib:Jain11} \cite{bib:Wang12}. %,bib:Geijtenbeek13}. %\cite{bib:Wang12}.

%Quando usando movimentos capturados como referência, preocupações adicionais surgem.
%Devido às simplificações relacionadas à modelagem do personagem, não é possível representar o ator fielmente na simulação.
%Portanto, apesar de servirem como referência, os dados capturados são teoricamente inválidos do ponto de vista físico, %dinâmico.
%exigindo controladores batante robustos, capazes de compensar essas inconsistências.

%Além disso, a interação dos pés com o chão também é simulada de maneira simplificada.
%, o que faz com que o chão virtual exerça forças de contato diferentes das que o chão real exerceria.
%Note que o
O problema de equilíbrio surge devido ao fato dos graus de liberdade (DOFs) globais do personagem
não possuírem atuadores diretos.
Eles são controlados indiretamente pelos atuadores internos das juntas e pela interação dos pés com o chão.
%Enquanto essa atuação interna está associada ao controlador utilizado, essa interação está fortemente associada à sua modelagem,
%que envolve tanto a geometria usada para representar o pé do personagem simulado quanto à técnica usada para tratar o contato na simulação. %geometria/modelagem
Enquanto essa atuação interna está associada ao controlador utilizado, essa interação, que depende de como o contato é tratado na simulação, está
fortemente associada à geometria usada para representar o pé do personagem simulado. %geometria/modelagem
%
Note que o pé real, por possuir um tecido flexível e uma geometria bem mais complexa do que as geometrias geralmente utilizadas em simulações, permite que o equilíbrio seja tratado
de uma maneira mais fácil.
Jain e Liu \cite{bib:Jain11} comprovam isso mostrando que controladores já existentes se tornam mais robustos apenas pelo fato de se usar corpos flexíveis na simulação de contatos.
%Ou seja, considerando uma melhor interação entre os pés e o chão, controladores menos sofisticados já seriam capazes de tratar o equilíbrio de maneira apropriada.


Este trabalho visa fortalecer a hipótese de que usar um modelo de contato %definir uma interação com o chão
mais estável facilita, de modo geral, o projeto de controladores.
Entretanto, obter a estabilidade ideal através de modelagens complicadas que se aproximem cada vez mais da interação real entre o pé humano e o chão ainda exigirá %ideal/desejada
esforços de pesquisa consideráveis. %, por ser uma tarefa bastante difícil.
%Entretanto, já que dificilmente se atingiria a estabilidade ideal/real de maneira computacionalmente eficiente, em vez de tentar propor modelos cada vez mais complexos, ...
Portanto, em vez de seguir essa abordagem mais difícil, %previsível, porém mais difícil de se implementar,
propõe-se uma nova vertente, a qual consiste em desvincular a modelagem do pé usada na simulação da sua interação física com o chão.

Em situações extremas, tais como alguém com os pés enterrados ou colados no chão e alguém sobre uma superfície de gelo ou usando pernas de pau,
%Quanto mais parado o pé estiver, mais estável o personagem será.
é fácil perceber que, quanto mais firme o pé estiver no chão, mais controle sobre seus DOFs globais o personagem terá.
Do ponto de vista de uma simulação física, manter o pé firme significa que o torque resultante no pé deve ser praticamente nulo.
%Ou seja, qualquer torque aplicado no pé deve ser compensado por torques provenientes da interação do pé com o chão.
Ou seja, o que se deseja da interação com o chão é que o torque aplicado ao pé, proveniente da atuação interna do personagem,
seja compensado ao máximo, considerando obviamente as limitações do pé humano.
%
A Figura \ref{fig:PefirmeXPedeslizando} ilustra o que acontece quando o torque aplicado ao pé não é compensado pelas forças de reação do chão (GRFs).

O que se propõe é compensar esse torque artificialmente, independente da modelagem usada, simplificando o controle dessa interação. %diretamente/artificialmente
Embora isso signifique, fisicamente, aplicar um torque externo ao pé do personagem, esse torque poderia ser produzido pelas GRFs, %por forças de reação aplicadas pelo chão,
caso uma outra geometria, suficientemente apropriada, fosse usada para o pé.
Assim, esse torque externo, dentro de um certo limite, ainda pode ser considerado fisicamente correto, validando o movimento gerado.
Ele só não é compatível com a geometria de fato usada na simulação.
%pode ser interpretado como uma correção da estabilidade, fisicamente possível, correspondente à melhoria da modelagem usada.
%Isso valida, pelo menos, o movimento resultante.
A grande vantagem é que nem mesmo é preciso saber como melhorar essa modelagem. %saber/conhecer/explorar/averiguar/investigar/analisar
A ideia é obter diretamente o efeito desejado de se usar uma geometria mais detalhada, que compensa efetivamente o torque aplicado ao pé de
apoio, mas sem se preocupar com implementá-la de fato na simulação.

%Embora esse controle independente possa resultar em super poderes, ... %independente/simplificado
Observe que compensar o torque do pé artificialmente pode prover ``superpoderes'' ao personagem. No caso em que todo o torque é compensado, por exemplo,
o personagem seria capaz de recompor seu equilíbrio mesmo em situações fisicamente impossíveis.
Entretanto, sacrificar a corretude física do movimento com o intuito de ganhar em estabilidade pode ser desejável em algumas situações.
Fornecer ao animador essa liberdade significa disponibilizar uma ferramenta bastante robusta na prática.
Essa flexibilidade no controle da estabilidade também é explorada neste trabalho.

Muitos trabalhos utilizam uma matriz Jacobiana como uma camada de abstração para simplificar
o tratamento de equilíbrio \cite{bib:Coros10} \cite{bib:GeijtenbeekState12} \cite{bib:Geijtenbeek12}.
O uso da transposta dessa Jacobiana permite que o centro de massa (COM) do personagem seja controlado diretamente, através de forças e torques virtuais.
O termo virtual é utilizado porque eles não são diretamente aplicados como forças e torques externos ``reais''.
Em vez disso, eles são convertidos e aplicados como torques internos equivalentes nas juntas, o que é fisicamente correto. %equivalentes/correspondentes
%
Enquanto a maioria dos trabalhos não considera a influência da parte superior do personagem na construção da Jacobiana,
este trabalho apresenta uma construção baseada no \emph{momentum} (quantidade de movimento) total do personagem relativo ao seu COM,
permitindo que o controle do equilíbrio envolva o personagem como um todo, e não apenas seus membros inferiores.

%-----------------------------------------------

%Uma outra contribuição deste trabalho consiste no uso de uma Jacobiana mais completa, baseada no momento do personagem em relação ao seu COM.
%Na Jacobiana comumente usada para tratamento de equilíbrio, como em \cite{bib:Coros10}, o COM é tratado como um simples e único efetor final. %simplesmente como um único efetor final.
%Assim, apenas as juntas situadas na hierarquia entre a raiz e o COM possuem influência sobre ele.
%No caso em que os pés são as raizes da hierarquia, o COM é influenciado basicamente pelos membros inferiores.
%Como o pulso poderia contribuir com o posicionamento do COM, por exemplo?
%A não ser que a mão estivesse em contato com alguma superfície, sendo portanto raiz de uma outra cadeia de corpos, o pulso não tem como influenciar o COM.
%O uso da Jacobiana baseada no momento permite que o personagem seja trabalhado como um todo para manipular o COM.
%A ideia é tratar cada corpo como um efetor final. Assim, todos os corpos influenciarão proporcionalmente, de acordo com suas massas, o COM do personagem.
%No caso do pulso, por exemplo, embora influenciando apenas a mão, ele também contribuirá indiretamente, já que a mão, sendo um efetor final, influenciará o COM.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Trabalhos Relacionados}

%Tentar manter esta seção resumida de modo que o artigo se mantenha com 8 páginas

%--------------Incluir esses parágrafos (pode resumí-los, caso necessário)-------------------

Embora comparações com os trabalhos relacionados sejam feitas no decorrer das outras seções, alguns outros pontos ainda merecem destaque. %comparações/análises/discussões

  %----------Comparar com os seguintes artigos--------------

    %\cite{bib:Jain11,bib:Geijtenbeek12,bib:Wrotek06,bib:Witkin88} %mais importante
      %Jain11: abordagem divergente da nossa ideia (eles propõem melhorar a modelagem do pé, enquanto nós propomos desacoplar modelagem do pé e sua interação com o chão)
      %Geijtenbeek12: parecido em muitos pontos (mas não usamos otimização)
      %Wrotek06: ideia de aplicar torques externos (eles aplicam explicitamente, nós aplicamos sutilmente e ainda usando argumentos que validam o movimento gerado sob certas condições)
        %validar movimento = corretude física
      %Witkin88 + spacetime constraints papers: spacetime constraints já tratam geometria do pé e interação com o chão independentemente (nós trazemos essa ideia para simulação)
        %eles consideram GRFs como parte dos parâmetros a serem obtidos por otimização, %o que garante a corretude física dessas GRFs? o movimento gerado pode ser dito fisicamente correto?
        %as quais são validadas fisicamente apenas através de restrições usadas no problema de otimização, baseadas no cone de fricção

    %\cite{bib:Zordan02,bib:Yin07,bib:Coros10} %menos importante

  %---------------------------------------------------------

Para obter uma maior estabilidade na simulação, outros trabalhos tentaram melhorar a modelagem do pé, a fim de simular o pé humano real de maneira mais aproximada.
Essas tentativas variam desde incluir mais articulações no pé, embora ainda utilizando \emph{links} rígidos \cite{bib:Wang09}, até considerar pés deformáveis \cite{bib:Jain11}.
Geijtenbeek et al. \cite{bib:Geijtenbeek12}, por sua vez, usam um pé com dimensões maiores para aumentar a área de contato com o chão. %tentar estabilizar melhor o contato.

Coros et al. \cite{bib:Coros10} incorporam uma forma de Jacobiana Transposta \cite{bib:Sunada94} para o controle de movimento 
resultando em uma versatilidade de ações e locomoções genéricas para bípedes, este método de controle é baseado no sistema de controle
de Pratt et al. \cite{bib:Pratt01} que utiliza atuadores virtuais. Este mesmo sistema é utilizado como base para fornecer o equilíbrio
de personagens bípedes em \cite{bib:Geijtenbeek12} \cite{bib:Zordan02}.



Quanto à construção da Jacobiana, os DOFs globais do personagem (não atuados) não se resumem apenas a sua posição global. %Sua orientação global também merece atenção.
%%Portanto, é interessante que a Jacobiana também considere a velocidade angular do personagem relativo ao COM, de maneira unificada.
Em contraste com Coros et al. \cite{bib:Coros10} por exemplo, é interessante que a sua orientação global também seja considerada na construção da Jacobiana,
permitindo que torques virtuais, e não apenas forças virtuais, também possam ser ``aplicados'' ao seu COM.
Este trabalho considera orientação e posições globais juntas, de maneira unificada. Geijtenbeek et al.
\cite{bib:Geijtenbeek12} também tratam orientação e posições globais, mas de maneira separada.

Enquanto alguns autores \cite{bib:Abe07} \cite{bib:Macchietto09} \cite{bib:Wang09} \cite{bib:Geijtenbeek12} precisam utilizar otimização, mesmo que \textit{off-line},
para que suas estratégias de equilíbrio funcionem bem, o modelo de contato proposto fornece uma possibilidade prática e bastante útil %possibilidade/abordagem
para um tratamento de equilíbrio estável e fácil de ser ajustado, sem a necessidade de otimização. 
Enquanto Coros et al. \cite{bib:Coros10} usam grafos de controle de pose \cite{bib:Yin07} para projetar o estilo do movimento gerado pelo controlador,
o modelo proposto neste trabalho permite que movimentos capturados inalterados sejam usados para esse propósito.
O trabalho de Geijtenbeek et al. \cite{bib:Geijtenbeek12} também possui essa vantagem, mas exige otimização.

%--------------------------------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Visão Geral}

%Visao geral
\begin{figure*}[tbh]
     \centering
     \includegraphics[width=18.4cm]{images/visaogeral.png} %height=5cm,
     \caption{Visão geral do controlador. Controladores PD são utilizados para imitar as características angulares passadas por movimentos de
     referência ou especificados pelo animador. O Controle de Equilíbrio do personagem utiliza uma Jacobiana transposta para computar os torques internos
     a serem aplicados nas juntas do personagem, de acordo com a hierarquia definida 
     pelo \textit{link} que está apoiado no solo, a partir de uma força e um torque virtuais aplicados no seu centro de massa. 
     O contato simplificado confere ao personagem maior estabilidade, compensando parte ou todo o impacto de seu pé contra o solo.}
     \label{fig:visaogeral}
     
\end{figure*}

Como ilustrado na Figura \ref{fig:visaogeral}, a estrutura do controlador proposto possui três componentes principais:
Controladores PD, Controle de Equilíbrio e Modelo Simplificado do Pé.

Os controladores PD são responsáveis por fazer com que as poses fornecidas pelo usuário ou por movimentos capturados sejam alcançadas.
Para isso, torques internos são aplicados às juntas de acordo com uma hierarquia que considera a pélvis como a raiz.
Entretanto, tal componente não controla os DOFs globais. Eles são controlados através de forças e torques virtuais ``aplicados'' ao COM do personagem.

O controle de equilíbrio fica responsável por determinar essas forças e torques virtuais e convertê-los em torques internos equivalentes, %equivalentes/correspondentes
por meio do uso da Jacobiana transposta. A matriz Jacobiana é montada de acordo com uma hierarquia que considera o pé de apoio como a raiz.
Note que os dois pés podem estar servindo de apoio ao mesmo tempo.

Por último, o torque (ou parte dele) aplicado ao pé de apoio é compensado artificialmente, com o intuito de aumentar a
estabilidade da interação com o chão e, consequentemente, facilitar o controle de equilíbrio. %da sua interação/do seu contato
%
Cada um desses três componentes do controlador são discutidos com mais detalhes nas seções a seguir.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Controladores PD}

A implementação dos controladores PD é baseada em \cite{bib:NunesTese12}, e quatérnios são usados para representar as orientações 3D.
Considerando apenas juntas esféricas, cada torque aplicado a uma junta $j$ é dado por:
%
\begin{equation}
 ^{j}\tau_{pd} = k_{s}(q_{d} * q_{a}^{-1}) + k_{d}(\omega_{d} -\omega_{a}),
 \label{eq:toquepd3d}
\end{equation}
%
\noindent onde $q_{a}$ e $q_{d}$ são os quatérnios atual e desejado da junta, %definidos pelas orientações dos corpos (\emph{links}) filhos relativas às dos corpos pais,
$\omega_{a}$ e $\omega_{d}$ são as velocidades angulares atual e desejada da junta, e $k_{s}$ e $k_{d}$ são constantes definidas pelo usuário.
%definidas pela subtração da velocidade angular do corpo filho pela velocidade angular do corpo pai ($\omega_{filho}$ - $\omega_{pai}$).
A expressão $q_{d} * q_{a}^{-1}$ corresponde à versão tridimensional da seguinte diferença angular bidimensional ($\theta_d - \theta_a$).
Note que o quatérnio resultante ainda precisa ser convertido para a representação eixo e ângulo.
As informações desejadas podem ser obtidas diretamente a partir de movimentos capturados, sem qualquer tipo de adaptação, como exigido em alguns trabalhos \cite{bib:Yin07}.
%As velocidades angulares são obtidas por diferenças finitas, ou definida como zero quando não usando mocap.
%
%É importante lembrar que, antes de realizar as operações, todas as informações devem estar definidas em um mesmo sistema de coordenadas.
De acordo com uma hierarquia pré-estabelecida, aplicar um torque $\tau$ a uma junta corresponde a aplicar o mesmo torque $\tau$ no seu \emph{link} %(corpo rígido individual)
filho e o seu torque oposto -$\tau$ no seu \emph{link} pai.
%Para mais detalhes sobre controladores PD para juntas esféricas, usar \cite{bib:NunesTese12} como referência.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Controle de Equilíbrio}

Como já foi dito, o controle de equilíbrio é exigido pelo fato de os DOFs globais do personagem não possuírem atuadores diretos.
Resumidamente, uma matriz Jacobiana é utilizada para converter forças e torques virtuais, a serem ``aplicados'' ao COM, em torques internos equivalentes nas juntas.
Esta seção é dividida em três partes principais: construção da matriz Jacobiana, cálculo da força virtual e cálculo do torque virtual.

%-----------------------------------------------

\subsection{Construção da Jacobiana}\label{subsec:Jacobiana}

A matriz Jacobiana descreve o relacionamento linear entre a velocidade de um ponto específico (efetor final)
e as velocidades das juntas que influenciam esse ponto, de acordo com uma hierarquia pré-definida.
Note que a Jacobiana envolve apenas uma subcadeia de \emph{links} articulados, começando a partir de uma base fixa (e.g. pé de apoio). %envolve/considera/engloba
Para tratar o equilíbrio, o COM do personagem é geralmente escolhido como o efetor final.
Usando a notação de \emph{vetores espaciais 6D} (Apêndice \ref{ap:notacao6D}), deseja-se determinar a Jacobiana $J_{com}$:
%
\begin{equation}
 ^{com}\phi_{com} = J_{com} ~ ^{J}\Phi_{J}
\label{eq:jacob}
\end{equation}
%
onde $^b\phi_a$ representa a \emph{velocidade 6D} de $a$ em coordenadas de $b$, e $^{J}\Phi_{J}$ corresponde ao vetor formado pelas \emph{velocidades 6D}
de todas as juntas, em coordenadas locais de cada junta. Considerando que $n$ corresponde ao número total de juntas do personagem, %$^{J}\Phi_{J}$ possui dimensão $6n\times1$:
$^{J}\Phi_{J} = \left( ^{j_{0}}\phi_{j_{0}}^T ~ ^{j_{1}}\phi_{j_{1}}^T ~ ... ~ ^{j_{n-1}}\phi_{j_{n-1}}^T \right)^T$ possui dimensão $6n\times1$.

Entretanto, considerar o COM como um simples efetor final significa assumir que apenas algumas juntas possuem influência sobre ele, o que claramente não é verdade.
%Enquanto a maioria dos trabalhos considera basicamente os membros inferiores na construção da Jacobiana,
Neste trabalho, todos os \emph{links} são considerados como efetores finais, cada qual possuindo uma Jacobiana exclusiva. %efetores finais diferentes %exclusiva/individual.
As velocidades de todos os \emph{links}, assim como suas Jacobianas individuais, são então combinadas proporcionalmente, de acordo
com suas massas, para calcular o \emph{momentum} total do personagem, relativo ao seu COM:
%
\begin{equation}
 \prescript{com}{}{ \left(\begin{array}{c} L \\ P \end{array}\right)_{p}} = \prescript{com}{}{ \left(\begin{array}{c} \mathcal{I} \cdot \omega \\ m \cdot v \end{array}\right)}_{p}
                                                                          = (\prescript{com}{p}{M}) (^{com}\phi _{com}),
\label{eq:MomTotal}
\end{equation}
%
%onde $L_p$ corresponde ao \emph{momentum} angular e $P_p$ ao \emph{momentum} linear do personagem, $\mathcal{I}_p$ corresponde à matriz de inércia total do personagem, relativa ao seu COM,
%e $m_p$ corresponde à massa total do personagem. $\prescript{com}{p}{M}$ é a \emph{massa 6D} total do personagem, em coordenadas do seu COM.
onde $L$ corresponde ao \emph{momentum} angular, $P$, ao \emph{momentum} linear, $\mathcal{I}$, à matriz de inércia, $\omega$, à velocidade angular,
$m$, à massa, e $v$, à velocidade linear. O índice $p$ engloba as informações totais do personagem.
$\prescript{com}{p}{M}$ é a \emph{massa 6D} total do personagem, em coordenadas do seu COM.

O \emph{momentum} total também pode ser obtido pelo somatório envolvendo todos os \emph{links}:
%
\begin{equation}
 \prescript{com}{}{ \left(\begin{array}{c} L \\ P \end{array}\right)_{p}} = \sum_l (\prescript{com}{l}{M})(^{com}\phi_{l})
                                                                          = \sum_l (\prescript{l}{com}{Ad})^{T} (^{l}_{l}M)(^{l}\phi_{l}),
\label{eq:MomSom}
\end{equation}
%
%onde o somatório em $l$ inclui todos os \emph{links} do personagem,
onde a matriz adjunta $(\prescript{l}{com}{Ad})^{T}$ transforma o \emph{momentum 6D} de cada \emph{link} $l$, dado em coordenadas locais, em coordenadas do COM.
Note que \emph{momentum 6D}, assim como \emph{força 6D}, é transformado com a inversa transposta da matriz adjunta.

Como mencionado, cada \emph{link} $l$ possui uma Jacobiana exclusiva, $J_{l}$, a qual relaciona sua \emph{velocidade 6D}, $^{l}\phi_{l}$, com o vetor $^{J}\Phi_{J}$.
Note que, de acordo com uma determinada hierarquia, $^{l}\phi_{l}$ pode ser obtida pelo somatório das \emph{velocidades 6D} de todas as juntas que influenciam o \emph{link} $l$:
%
\begin{equation}
 ^{l}\phi_{l} = \sum_j {^{l}\phi_{j}} = \sum_j {^{l}_{j}Ad} ~ {^{j}\phi_{j}} = J_{l} ~ ^{J}\Phi_{J},
\label{eq:jacobIndividual}
\end{equation}
%
onde o somatório em $j$ inclui todas as juntas que influenciam o \emph{link} $l$.
Note que, com o objetivo de isolar o vetor $^{J}\Phi_{J}$ completo à direita, esse somatório em $j$ pôde ser substituído pela multiplicação de $J_{l}$ por $^{J}\Phi_{J}$.
Portanto, $J_{l}$ corresponde a uma matriz, de dimensão $6\times6n$, contendo essas matrizes adjuntas dispostas horizontalmente nos locais correspondentes às suas respectivas juntas,
incluídas no somatório.
%
Nos locais correspondentes às juntas que não influenciam o \emph{link} $l$, são colocadas matrizes nulas de dimensão $6\times6$.
%
Para ficar mais claro, considere hipoteticamente que o personagem possui apenas 6 juntas.
Considere também que, de acordo com a hierarquia adotada, um \emph{link} $l$ é influenciado pelas juntas $j_{1}$, $j_{2}$ e $j_{4}$.
A Jacobiana individual desse \emph{link} $l$ é definida como segue:
%
\begin{equation}
 ^{l}\phi_{l} = J_{l} ~ ^{J}\Phi_{J} = \left[ \begin{array}{cccccc} 0 & _{ j_{1} }^{l}Ad & _{ j_{2} }^{l}Ad & 0 & _{ j_{4} }^{l}Ad & 0
                                              \end{array} \right] ~ ^{J}\Phi_{J}.
\end{equation}

Para facilitar a implementação, uma determinada hierarquia pode ser representada por uma tabela relacionando todos as juntas (linhas) a todos os \emph{links} (colunas) do personagem.
Cada célula dessa tabela é preenchida com 0 (zero) ou 1 (um), de acordo com a hierarquia. Preencher uma célula com 1 significa que a junta correspondente àquela linha influencia
o \emph{link} correspondente àquela coluna. Caso contrário, a célula deve ser preenchida com 0. %(ver Apêndice \ref{ap:hierarquia}). %(ver Apêndices \ref{ap:modelo} e \ref{ap:hierarquia}).
%
Em cada passo da simulação, tanto a hierarquia do personagem quanto as Jacobianas são atualizadas de acordo com os contatos entre os pés e o chão.

Por fim, combinando as Equações \ref{eq:MomTotal}, \ref{eq:MomSom} e \ref{eq:jacobIndividual}, e comparando com a Equação \ref{eq:jacob},
tem-se a expressão final da Jacobiana $J_{com}$,
%Note que essa \emph{Jacobiana espacial 6D baseada em momento}, $J$, é mais geral, descrevendo um relacionamento linear entre a \emph{velocidade 6D} relativa ao COM do personagem
%e as \emph{velocidades 6D} de \textbf{todas} as suas juntas.
a qual envolve todas as juntas do personagem, e não apenas as dos membros inferiores:
%
\begin{equation}
 J_{com} = (\prescript{com}{p}{M})^{-1} \sum_l (\prescript{l}{com}{Ad})^{T} (_{l}^{l}M) J_{l},
\end{equation}
%
onde:
%
\begin{equation}
 \prescript{com}{p}{M} = \sum_l (\prescript{l}{com}{Ad})^{T} (_{l}^{l}M) (\prescript{l}{com}{Ad}).
\end{equation}
%
O que a operação $(\prescript{l}{com}{Ad})^{T} (_{l}^{l}M) (\prescript{l}{com}{Ad})$ faz é transformar a matriz de \emph{massa 6D}
%dada em coordenadas locais do \emph{link} $l$, em coordenadas do COM \cite{bib:NunesTese12}.
de cada \emph{link} $l$, dada em coordenadas locais, em coordenadas do COM \cite{bib:NunesTese12}.

As \emph{forças 6D} internas a serem aplicadas às juntas do personagem são obtidas através da transposta da Jacobiana $J_{com}$, de acordo com a \emph{força 6D} virtual,
composta pelo torque virtual e pela força virtual concatenados (Subseções \ref{torquevirtual} e \ref{forcavirtual}):
%
\begin{equation}
 ^{J}W_{J} = (J_{com})^T ~ ^{com}w_{com},
\label{eq:jacobTransp}
\end{equation}
%
onde $^{b}w_{a}$ representa a \emph{força 6D} de $a$ em coordenadas de $b$, e $^{J}W_{J}$ corresponde ao vetor formado pelas \emph{forças 6D}
de todas as juntas em coordenadas locais de cada junta. %Considerando que $n$ corresponde ao número total de juntas do personagem, %$^{J}\Phi_{J}$ possui dimensão $6n\times1$:
Semelhante a $^{J}\Phi_{J}$ (Equação \ref{eq:jacob}), $^{J}W_{J} = \left( ^{j_{0}}w_{j_{0}}^T ~ ^{j_{1}}w_{j_{1}}^T ~ ... ~ ^{j_{n-1}}w_{j_{n-1}}^T \right)^T$
também possui dimensão $6n\times1$.

Note que, como as juntas usadas são esféricas, dessas \emph{forças 6D} internas obtidas, apenas os torques são necessários.
As coordenadas correspondentes a forças são simplesmente ignoradas.
Assim, o torque a ser aplicado à junta $j$ do personagem, em cada instante da simulação, é calculado como:
%
\begin{equation}
  ^{j}\tau_{total} = {^{j}\tau_{pd}} + {^{j}\tau_{eq}},
\label{eq:pd_eq}
\end{equation}
%
onde $^{j}\tau_{eq}$ corresponde ao torque proveniente da \emph{força 6D} interna obtida para a junta $j$, através da Equação \ref{eq:jacobTransp}.

%-----------------------------------------------

\subsection{Força Virtual}\label{forcavirtual}

A expressão da força virtual possui três termos principais.

O primeiro termo é responsável por manter o COM do personagem sobre a sua região suporte, %o seu polígono/área/região suporte.
%Embora teoricamente formado pelo fecho convexo de todos os pontos de contato entre o personagem e o chão,
%o polígono suporte é geralmente substituído por um único ponto, aqui chamado de ponto suporte, $p_{sup}$.
a qual é geralmente simplificada e substituída por um único ponto, aqui chamado de ponto suporte, $p_{sup}$.
%Para simplificar os cálculos, o polígono suporte é geralmente substituído por um único ponto, aqui chamado de ponto suporte, $p_{sup}$.
 %Como uma simplificação, um único ponto, pertencente a esse fecho convexo, é escolhido como referência, representando a base de suporte.
 %Essa base de suporte é geralmente simplificada, passando a ser representada por um único ponto, aqui chamado de ponto base.
 %Isso significa que o COM deve ser mantido sobre o ponto suporte escolhido.
 %Isso significa que o COM precisa ser comparado apenas ao ponto suporte escolhido.
 %Portanto, basta comparar o COM ao $p_{sup}$.
%
Um controlador PD é usado para corrigir a posição e a velocidade do COM. No caso geral, tem-se:
%
\begin{equation}
  %f_{controle} = k_{fs}[(^{mo}pos_{d}\bot - ^{mo}pos_{com}\bot)-(pos_{d}\bot - pos_{com}\bot)] + k_{fd}(^{mo}v_{com}\bot - v_{com}\bot),
  f_{controle} = k_{fs} \left( {p_{com}}_d - {p_{com}}_a \right) + k_{fd} \left( {v_{com}}_d - {v_{com}}_a \right),
  \label{eq:forcacontrole}
\end{equation}
%
onde ${p_{com}}_d$ e ${p_{com}}_a$ são as posições desejada e atual do COM, ${v_{com}}_d$ e ${v_{com}}_a$ são as velocidades lineares desejada e atual do COM,
e $k_{fs}$ e $k_{fd}$ são constantes definidas pelo usuário.
%
%Informações projetadas horizontalmente
Note que manter o COM sobre o ponto suporte não implica em controle vertical algum. Portanto, apenas as projeções horizontais dessas informações devem ser usadas.

Caso nenhum movimento de referência seja utilizado, todas as informações são obtidas a partir da simulação.
Além disso, a posição e a velocidade desejadas do COM correspondem ao ponto suporte (${p_{com}}_d = p_{sup}$) e a zero (${v_{com}}_d = 0$), respectivamente.
%f_{controle} = k_{fs} \left( ^{sim}p_{sup} - ^{sim}p_{com} \right) + k_{fd} \left( 0 - {^{sim}v_{com}} \right),
%
Já quando um movimento capturado é usado como referência, a posição e a velocidade do COM na simulação são comparadas com a posição e a velocidade do COM no movimento capturado:
%
\begin{equation}
  f_{controle} = k_{fs} \left( {^{mo}\hat{p}_{com}} - {^{sim}\hat{p}_{com}} \right) + k_{fd} \left( {^{mo}v_{com}} - {^{sim}v_{com}} \right),
  \label{eq:forcacontrole}
\end{equation}
%
onde ${^{mo}\hat{p}_{com}}$ e ${^{sim}\hat{p}_{com}}$ são as posições relativas do COM, no movimento capturado e na simulação, respectivamente.

Note que considerar posições absolutas significaria amarrar a posição global do personagem simulado ao movimento capturado.
Portanto, essas posições devem ser calculadas relativas aos respectivos personagens, o usado para reproduzir o movimento capturado e o simulado.
%Note que cada posição é calculada relativa ao seu ponto suporte correspondente: ${\hat{p}_{com}} = p_{com} - p_{sup}$.
Os pontos suportes desses personagens são usados como pontos de referência no cálculo dessas posições relativas: ${\hat{p}_{com}} = p_{com} - p_{sup}$.
%
Assim, o controlador usado suporta translações horizontais do personagem simulado.
%Por exemplo, quando um movimento capturado cíclico de caminhar é usado, o personagem simulado pode caminhar continuamente,
%apesar da descontinuidade da posição global horizontal do personagem no movimento capturado.
%Já quando a direção do caminhar é modificada, as informações (posição e velocidade) também devem ser rotacionadas verticalmente, de acordo com a nova direção.
%A nova direção define um novo sistema de coordenadas do personagem. O eixo vertical sempre é mantido fixo. Um eixo horizontal inicial deve ser definido (e.g. z positivo).
%A direção (e o sistema de coordenadas novo) é modificada de acordo com um ângulo entre o novo z+ e o z+ inicial.

%Verificar na implementação:
 %$^{mo}p_{sup}$ e $^{sim}p_{sup}$ estão usando o mesmo sensor (ou seja, estão na mesma situação de contato)?
  %mesmo qnd no mocap os 2 pes estao no chao, e na simulacao um pe esta no chao mas o outro ainda esta chegando, o $^{sim}p_{sup}$ usa o ponto medio, assim como o $^{mo}p_{sup}$?
  %note que o $^{sim}p_{sup}$ poderia usar apenas o com do pe no chao, ja que o outro pe ainda estaria no ar (possibilidade indesejada).
 %ao modificar a direção do caminhar, todas as informações estão sendo rotacionadas? até as da equação $f_{controle}$ ($\hat{p}_{com}$ e $v_{com}$)?

Note também que a escolha do ponto suporte pode variar. %, de acordo com o propósito do controlador.
Uma opção seria usar o centro do fecho convexo, mas isso exigiria cálculos desnecessários para o propósito deste trabalho.
Escolhas mais simples, baseadas nas posições dos tornozelos ou dos COM's dos pés, são normalmente suficientes \cite{bib:Abe07} \cite{bib:Geijtenbeek12}.
%
Neste trabalho, a escolha do ponto suporte depende da situação de contato entre o personagem e o chão. %, de acordo com a Figura \ref{fig:posdesejada}.
Caso um único pé esteja em contato com o chão, $p_{sup}$ é calculado como o COM desse pé de apoio, projetado horizontalmente.
Caso os dois pés estejam em contato com o chão, $p_{sup}$ é calculado como o ponto médio entre os COM's dos dois pés, também projetados horizontalmente.

%\begin{figure}%[H]
%     \begin{center}
%     \includegraphics[width=10.18cm,height=5cm]{posdesejada.png}
%     \caption{Pés vistos de cima. A cor vermelha indica que o pé está em contato com o solo. (a) Os dois pés estão em contato com o solo.
%                                                                                             (b) Somente o pé direito está em contato com o solo. }
%     \label{fig:posdesejada}
%     \end{center}
%\end{figure}
%%alterações na figura: inverter partes (a) e (b) na figura (e no caption, consequentemente); atualizar pos_d para p_{sup}

O segundo termo é responsável por compensar a gravidade. Para isso, uma força vertical constante deveria ser aplicada ao COM do personagem, contrária ao seu peso.
A Jacobiana usada neste trabalho permite que essa força seja facilmente considerada como parte da força virtual:
%
\begin{equation}
  f_{g} = -\sum_l m_{l} g,
\end{equation}
%
onde o somatório em $l$ inclui todos os \emph{links} do personagem, $m_{l}$ é a massa de cada \emph{link} $l$ e $g$ é a aceleração da gravidade.

O terceiro e último termo é responsável por corrigir o \emph{momentum} linear do personagem, relativo ao seu COM: %, o qual é calculado como:
%
\begin{equation}
  f_{P} = k_{P} (^{mo}P - ^{sim}P), ~~
  P = \sum_l m_{l} v_{l},
\label{eq:momentoli}
\end{equation}
%
%onde $P = \sum_b m_{b} v_{b}$ e $v_{b}$ é a velocidade de cada corpo $b$.
onde $k_{P}$ é uma constante definida pelo usuário e $v_{l}$ é a velocidade de cada \emph{link} $l$.
%$^{mo}P$ é extraído por meio de diferenças finitas.
As velocidades dos \emph{links} no movimento capturado, $^{mo}v_{l}$, são estimadas usando diferenças finitas. %estimadas/obtidas
Na ausência de movimentos de referência, considera-se $^{mo}P = 0$.

A expressão final para a força virtual é definida como:
%
\begin{equation}
  f_{virtual} = f_{controle} + f_{g} + f_{P}.
\end{equation}

%-----------------------------------------------

\subsection{Torque Virtual}\label{torquevirtual}

A expressão do torque virtual possui dois termos principais.

O primeiro termo é responsável por controlar a orientação global do personagem, a qual é realizada através do controle de um \emph{link} específico:
%
\begin{equation}
 %^{j}\tau_{pd} = k_{s}(q_{d} * q_{a}^{-1}) + k_{d}(\omega_{d} -\omega_{a}),
 %\label{eq:toquepd3d}
 ^{l}\tau_{controle} = k_{ts}(^{l}q_{d} * {^{l}q_{a}}^{-1}) + k_{td}(^{l}\omega_{d} - {^{l}\omega_{a}}),
 \label{eq:controletorque}
\end{equation}
%
onde $^{l}q_{a}$ e $^{l}q_{d}$ são os quatérnios atual e desejado do \emph{link} $l$, em coordenadas globais,
$^{l}\omega_{a}$ e $^{l}\omega_{d}$ são as velocidades angulares atual e desejada do \emph{link} $l$, e $k_{ts}$ e $k_{td}$ são constantes definidas pelo usuário.
As informações desejadas podem ser obtidas a partir de movimentos de referência ou informadas pelo usuário.
%
Em vez de aplicar torques externos diretamente aos \emph{links} \cite{bib:Wrotek06}, $^{l}\tau_{controle}$ é considerado como parte do torque virtual,
que será convertido pela Jacobiana transposta em torques internos nas juntas. 
O \emph{link} escolhido nos testes realizados foi o peito, por ter a característica de ser o \emph{link} que se mantém mais estavél, com menos mudanças
de orientação, durante a simulação.

O outro termo é responsável por corrigir o \emph{momentum} angular do personagem, relativo ao seu COM: %, o qual é calculado como:
%
\begin{equation}
  \tau_{L} = k_{L} (^{mo}L - ^{sim}L),
\label{eq:momentola}
\end{equation}
%
onde $k_{L}$ é uma constante definida pelo usuário e
\begin{equation}
  L = \sum_l \left( L_{l} + \left( p_{l}-p_{com} \right) \times \left( m_{l} \cdot \left( v_{l}-v_{com} \right) \right)  \right),
\end{equation}
onde o somatório em $l$ inclui todos os \emph{links} do personagem, $L_{l} = \mathcal{I}_{l} \omega_{l}$ é o \emph{momentum} angular de cada \emph{link} $l$
(onde $\mathcal{I}_{l}$ e $\omega_{l}$ são sua inércia e sua velocidade angular, respectivamente), $p_{l}$ é a posição do COM de cada \emph{link} $l$,
e $p_{com}$ é a posição do COM do personagem.
%$^{mo}L$ é extraído por meio de diferenças finitas.
As velocidades angulares dos \emph{links} no movimento capturado, $^{mo}\omega_{l}$, também são estimadas usando diferenças finitas. %estimadas/obtidas
Na ausência de movimentos de referência, considera-se $^{mo}L = 0$.

A expressão final para o torque virtual é definida como:
%
\begin{equation}
  \tau_{virtual} =  {^{l}\tau_{controle}} + \tau_{L}.
\end{equation}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Modelo Simplificado do Pé}

Este trabalho propõe um modelo simplificado do pé usando uma geometria paramétrica, que permite modelá-lo de forma genérica, de acordo com o desejo do usuário.
Baseado no \emph{cone de fricção de Coulomb} \cite{bib:Popov10}, os parâmetros influenciam o cálculo do torque máximo que pode ser compensado no pé,
permitindo que o usuário balanceie estabilidade e corretude física.
Ou seja, fica a critério do usuário escolher diferentes variações entre um controlador bastante estável e fisicamente incorreto e
um controlador mais instável e fisicamente correto (Figura \ref{fig:EstabVsCorrFis}).

\begin{figure}[htbp]
\includegraphics[width=9cm]{images/geometriaparametrica.png}
\caption{A geometria paramétrica do pé proposta permite ao usuário balancear estabilidade e corretude física da simulação.}
\label{fig:EstabVsCorrFis}
\end{figure}

Note que, em alguns casos mais estáveis do que aqueles permitidos pela geometria do pé usada na simulação, o movimento gerado ainda pode ser considerado fisicamente correto.
Nesses casos, apenas a geometria usada é que não está adequada ao movimento desejado.
Entretanto, se a geometria usada fosse melhorada de uma maneira realista, a fim de aumentar a estabilidade, o movimento anteriormente gerado seria validado.
Portanto, a corretude física do movimento que seria gerado, caso uma geometria mais apropriada fosse usada, independe da geometria usada de fato.
%
Note também que, no caso mais instável, em que nenhum torque é compensado artificialmente, o torque aplicado ao pé ainda pode ser compensado, independente da geometria paramétrica,
pela interação entre a geometria do pé usada na simulação e o chão.
%Portanto, a geometria paramétrica é independente da geometria usada na simulação.

Antes de detalhar a geometria paramétrica usada, é importante perceber que a ideia de desvincular a geometria do pé usada na simulação
da sua interação com o chão introduz uma representação abstrata dessa interação. %, a qual está relacionada à geometria paramétrica proposta.
A estrutura concreta dessa representação, a qual define o significado dos parâmetros, não é única.
%A única exigência é que essa representação abstrata seja coerente em relação à compensação do torque aplicado no pé.
A única exigência é que haja coerência em relação à compensação do torque aplicado ao pé.
Afinal, a estrutura definida e a escolha dos parâmetros deve determinar quanto do torque aplicado ao pé deve ser compensado.
Além disso, deseja-se que a manipulação desses parâmetros seja simples. %simples/fácil/intuitiva
Portanto, embora seja necessário definir uma estrutura específica, a contribuição de se usar uma representação abstrata desvinculada vai além dos limites impostos pela
estrutura escolhida em particular. A estrutura escolhida neste trabalho é descrita a seguir.

%\begin{figure}[h]%[!htbp]
%     \begin{center}
%     \includegraphics[height=3.5cm]{conefriccao.png}
%     %\caption{Cone de Fricção para um pé cilíndrico. (a) Vista superior. (b) Vista lateral.}
%     \caption{Modelagem de contato utilizada para o pé de apoio, baseada no cone de fricção de Coulomb. (a) Vista superior do pé. (b) Vista lateral do pé.}
%     \label{fig:conefriccao}
%     \end{center}
%\end{figure}

Por questão de simplicidade, algumas restrições na estrutura usada são definidas.
Primeiro, a geometria escolhida para representar o pé possui um formato cilíndrico, como ilustrado na Figura \ref{fig:visaogeral} (vistas superior e lateral).
%Analisando
Assumindo o formato ilustrado, pode-se prever a situação extrema em que o máximo de torque no pé seria compensado,
qual seja, uma força resultante de reação do chão sendo aplicada a uma extremidade do contato do cilindro com o chão.
Devido à simetria do cilindro, sem perda de generalidade, pode-se assumir que essa força resultante é aplicada à extremidade mais à direita do círculo correspondente
à área de contato entre o cilindro e o chão.
Baseado no \emph{cone de fricção de Coulomb} posicionado nesse ponto de contato extremo, assume-se também que a força resultante capaz de compensar o máximo de torque no pé
está de acordo com o esquema ilustrado na Figura \ref{fig:visaogeral}, na qual observa-se um vetor, $GRFmax$, situado no limite do cone definido pelo ângulo $\theta$.
Considerando que o pé possui densidade uniforme, ainda é necessário definir as dimensões do cilindro e um módulo máximo para o vetor $GRFmax$.
Assim, pode-se calcular o torque máximo compensável, $\tau_{comp}$, como:
%
\begin{equation}
  %\tau_{comp} = GRF_{max} \times D_{com} = \left( \begin{array}{c}  mcos\theta \\ msen\theta \\ 0 \end{array} \right) \times \left( \begin{array}{c}  -r \\ h \\ 0 \end{array} \right),
  \tau_{comp} = D_{com} \times GRF_{max}
              = \left( \begin{array}{c}  -r \\ h \\ 0 \end{array} \right) \times \left( \begin{array}{c}  m\mathrm{cos}\theta \\ m\mathrm{sen}\theta \\ 0 \end{array} \right),
\end{equation}
%
onde $h$ é a distância do solo ao COM do pé, $r$ é o raio do pé, $m$ é o módulo do vetor $GRFmax$ e $\theta$ é o ângulo do cone de fricção.
%
É importante enfatizar que esses quatro paramêtros são definidos pelo usuário.
E é através da escolha dos valores desses parâmetros que o usuário é capaz de, abstratamente, deslizar %deslizar/transladar %abstratamente/intuitivamente
a barra ilustrada na Figura \ref{fig:EstabVsCorrFis}.

%$\tau_{comp}$ é sempre horizontal.
Considerando todas as suposições mencionadas, pode-se verificar uma limitação da estrutura escolhida: $\tau_{comp}$ é sempre horizontal e, consequentemente,
não é capaz de compensar qualquer componente vertical do torque aplicado ao pé.
%Assume-se que o torque aplicado no pé em torno do eixo vertical é sempre totalmente compensado.
Novamente, por questão de simplicidade, assume-se que essa componente vertical é sempre artificialmente compensada por completo.
%
%módulo
Além disso, novamente, devido à simetria do cilindro, apenas o módulo do torque máximo compensável é necessário para determinar quanto do torque aplicado ao pé deve ser compensado.
Para qualquer direção do torque aplicado ao pé, o ponto de contato extremo e a direção do vetor $GRFmax$ podem ser adaptados convenientemente,
obtendo sempre o mesmo esquema da Figura \ref{fig:visaogeral}.

%A razão de compensação do torque aplicado ao pé é definida por:
Considere a seguinte razão, correspondente à porcentagem do torque aplicado ao pé que será compensado:
%
\begin{equation}
 %ratio  = \frac{\| \tau_{comp} \|}{\| \tau_{foot}\bot \|}, %1\geqslant ratio>0,
 comp  = \frac{\| \tau_{comp} \|}{\| ^{foot}\tau_{eq}\bot \|}, %1\geqslant ratio>0,
\end{equation}
%
onde $^{foot}\tau_{eq}\bot$ é a projeção horizontal do torque aplicado ao pé de apoio, extraído do controle de equilíbrio (Equação \ref{eq:pd_eq}). %(Seção \ref{}). %projeção/componente
$^{foot}\tau_{eq} = -^{ankle}\tau_{eq}$. $\| \tau_{comp} \| = |$ \textit{h} \textit{m} cos$\theta$ + \textit{r} \textit{m} sen$\theta$ $|$.
%Caso $ratio > 1$, considerar $ratio = 1$. $0 \leq ratio \leq 1$.
O valor de $comp$ está situado no intervalo [0, 1]. Caso $comp$ seja maior do que 1, o valor é truncado. %definido como igual a 1.
Na Figura \ref{fig:EstabVsCorrFis}, aumentar o valor de $\| \tau_{comp} \|$ (e, consequentemente, de $comp$) corresponde a deslocar a barra para a esquerda.
Portanto, o torque total aplicado ao pé de apoio do personagem simulado é definido de acordo com essa razão de compensação:
%
\begin{equation}
  %^{foot}\tau_{total} = ^{foot}\tau_{pd} + ^{foot}\tau_{eq}*ratio.
  %^{foot}\tau_{total} = (^{foot}\tau_{pd} + ^{foot}\tau_{eq}\bot)*(1-ratio).
  ^{foot}\tau_{total} = ^{foot}\tau_{pd} + ^{foot}\tau_{eq}\bot \cdot (1-comp).
\end{equation}
%
%Diferente de um modelo de contato mais complexo, tal como o utilizado por \cite{bib:Jain11}, foi utilizado esse modelo mais
%simples que promove resultados desejados, quando comparados aos resultados da simulação seguindo os dados de referência.
%
%O usuário pode também especificar uma tolerância para a porcentagem do torque absorvido pelo pé. A estratégia de equilíbrio deve ser desativada caso a
%%Esse valor estipula que o personagem deve desativar a estratégia de equilíbrio caso a
%porcentagem do torque compensado ($ratio$) esteja abaixo do valor de tolerância.
%Isso serve para que o personagem possa cair mais naturalmente.
%%Este controle promovido pelo pé desacoplado do modelo simulado visa dar plenos poderes para o usuário determinar como a animação deve se comportar.
Quando a porcentagem ($comp$) de compensação do torque no pé está abaixo de um certo valor de tolerância, escolhido pelo usuário,
o controle de equilíbrio pode ser desligado, permitindo que o personagem caia mais naturalmente.
Ao desligá-lo, aumentar o amortecimento nos controladores PD também ajuda a obter uma queda mais natural.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Resultados}

Para aquisição de todos os resultados foi utilizado um modelo de personagem humanoide com massa de aproximadamente 72kg.
Para a simulação, foi utilizado o motor de física \textit{Open Dynamics Engine} (ODE) \cite{bib:ODE}, com constante gravitacional de \textit{g}=-9,8$m/s^{2}$, 
coeficiente de fricção $\mu$=1,0, e passo de simulação de 0,0005s \cite{bib:Coros10}. O contato com o solo foi 
simulado com Parâmetros de Redução de Erro (\textit{Error Reduction Parameter} (ERP)) e Força de Restrição Associada (\textit{Constraint Force Mixing} (CFM)) 
iguais a ERF = 0,02 e CFM = 0,0001.
A malha utilizada na renderização dos resultados (Figura \ref{fig:modeloutilizado}b) %, sobre o modelo simplificado,
não interfere de forma alguma na simulação física.
Todas as simulações foram realizadas em tempo real em uma máquina intel Core i7 de 2,20GHz x 8.

Neste trabalho, o tratamento de equilíbrio proposto permite que o personagem siga movimentos capturados ou mantenha
poses estáticas, obedecendo alguns objetivos impostos pelo usuário. Uma série de experimentos foi realizada para demonstrar alguns dos
recursos e aplicações da estrutura de controle. Um vídeo acompanha este artigo para visualização dos testes e melhor
avaliação dos resultados. Em todos os resultados, a estrutura do personagem simulado possui 13 juntas do tipo esférica, totalizando 39 DOFs internos, e
todos os \textit{links} (inclusive os pés) na forma de paralelepípedos (Figura \ref{fig:modeloutilizado}a). O vídeo mostra o personagem em diferentes situações, tanto
com os dois pés no chão quanto com um único pé de apoio.

\begin{figure}[tbh]
\centering
\includegraphics[width=5cm]{images/modelo-utilizado.png}
\caption{Personagem utilizado nos testes. (a) O \textit{wireframe} em vermelho representa a forma dos \textit{links} do personagem considerados
         na simulação, e as esferas verdes representam as juntas, todas do tipo esférica.
         (b) Malha utilizada no personagem na renderização da simulação.}
\label{fig:modeloutilizado}
\end{figure}

%\noindent \textbf{Parâmetros dos controladores}.
\noindent \textbf{Termos do controle virtual}. A influência de cada um dos termos virtuais sobre o controlador de equilíbrio foi testada:
força de controle, compensação da gravidade, erro do \textit{momentum} linear, torque de controle e erro do \textit{momentum} angular.
Esses termos influenciam diretamente no equilíbrio do personagem e foram baseados em outros trabalhos. %utilizados de forma diferenciada em outros trabalhos.
Como alguns exemplos, \cite{bib:Macchietto09} utilizaram \emph{momentum} angular, \cite{bib:Geijtenbeek12} \cite{bib:Zordan02} utilizaram o objetivo de manter o COM
sobre o centro de uma região suporte, e \cite{bib:Coros10} utilizaram Jacobianas individuais para compensar a gravidade, embora não tenha sido de maneira unificada,
como neste trabalho.
%Somamos a isto a habilidade de todos os \textit{links} do personagem atenderem a uma orientação desejada no peito no termo torque de controle.

\noindent \textbf{Seguir movimentos capturados}. Para seguir movimentos de referência, controladores PD foram utilizados nas juntas. No entanto, o objetivo dos controladores
PD pode entrar em conflito com os objetivos do controle de equilíbrio. Com o intuito de mostrar que esses dois componentes do controlador se adaptam bem ao seguir
movimentos capturados, são mostrados os gráficos dos ângulos (eixo x, y e z) do quadril direito do personagem como exemplo,
comparando os movimentos capturado e simulado (Figura \ref{fig:grafico-quadril-direito}).
%Assim, observamos que mesmo sendo aplicados torques internos a partir dos controladores PD e do controle de equilíbrio em cada junta do personagem,
%este consegue em geral executar o movimento desejado.
%
Note que, assim como em \cite{bib:Geijtenbeek12}, o movimento capturado pode ser usado diretamente, sem qualquer tipo de adaptação ao controle proposto neste trabalho.

\begin{figure}[thbp]
\centering
\includegraphics[width=9cm]{images/quadril-direito.png}
\caption{Diferença angular da junta do quadril direito entre o movimento capturado (\emph{mocap}) e o movimento simulado. O movimento considerado é o de 
         dar socos (vide o vídeo de referência).}
\label{fig:grafico-quadril-direito}
\end{figure}

\noindent \textbf{Perturbações externas}. Nos testes realizados, o personagem foi perturbado de duas maneiras: através de forças externas aplicadas diretamente e
através de colisões com objetos lançados contra ele.
As forças externas foram aplicadas enquanto ele se encontrava parado, para evidenciar o movimento de todos os seus \textit{links} na recuperação 
do equilíbrio.
Já os objetos, foram lançados em partes aleatórias do personagem, para observar seu comportamento enquanto ele seguia movimentos capturados. %como ele se comporta com essa intervenção externa.
%A medida que são lançadas as esferas
Os objetos lançados eram esferas com densidade de 100$kg/m^{3}$ e com velocidade variando entre 7$m/s$ e 15$m/s$.
A densidade foi aumentada gradativamente até o ponto em que o personagem não conseguiu manter-se em pé (aproximadamente na densidade de 125$kg/m^{3}$).
%Foram realizadas colisões de esferas com o personagem em movimentos em um único pé de apoio e com os dois pés de apoio. O personagem manteve-se 
%em equilíbrio seguindo os movimentos capturados mesmo com estas perturbações externas.

\noindent \textbf{Controladores externos}. No objetivo de observar ainda mais a influência de todos os \emph{links} do personagem para manutenção do equilíbrio, foi 
utilizado um controlador posicional externo (Equação \ref{eq:pdforca}). Este controlador opera em cada instante da simulação aplicando uma força externa em um determinado
\textit{link} do personagem para que o COM deste \textit{link} consiga atingir um ponto virtual determinado pelo animador.
%
A estabilidade fornecida pelo contato simplificado permite ao animador facilmente balancear as constantes dos controladores PD, do controle de equilíbrio e desses controladores externos,
de acordo com o seu propósito.
%
A Figura \ref{fig:controle-externo} mostra um exemplo em que o animador ativa um desses controladores externos com o objetivo de deslocar a pélvis do personagem para frente.
Note que o controle de equilíbrio se sobrepõe, claramente fazendo com que o personagem seja trabalhado como um todo para manter o COM sobre sua região suporte.
%
A força externa aplicada pelo controle posicional externo tem a seguinte expressão:
%
\begin{equation}
 f_{externa} = pks (pv - efetor) - pkd (\omega_{link}),
 \label{eq:pdforca}
\end{equation}
%
onde $pv$ é a posição do ponto virtual informado pelo animador, $efetor$ é a posição do COM do \textit{link} do personagem que se desejada
atingir o $pv$, $\omega_{link}$ é a velocidade linear desse \textit{link}, e $pks$ e $pkd$ são constantes.

\begin{figure*}[tbh]
     \centering
     \includegraphics[width=18.4cm]{images/filmstrip-pelvis.png} %height=5cm,
     \caption{Resposta do controlador de equilíbrio na presença de um estímulo externo. O personagem tenta manter, utilizando os \textit{links} de seu corpo, o
     centro de massa (esfera preta e branca) na área de suporte quando sua pélvis é deslocada por um controlador externo.}
     \label{fig:controle-externo}
     
\end{figure*}

\noindent \textbf{Segurar xícara}. O animador pode também restringir as orientações dos \textit{links} do personagem. %em uma determinada orientação em um \textit{link}.
Neste teste, foi utilizado um controlador PD interno extra no pulso do personagem, a fim de restringir globalmente o \textit{link} que representa sua mão.
Note que somente as rotações nos eixos x e z são controladas, a fim de que a xícara não vire (a xícara é livre para rotacionar no eixo y).
Observou-se que o personagem conseguiu seguir movimentos capturados e se equilibrar, enquanto ainda respeitava essa restrição adicional (vide o vídeo de referência). %mesmo na presença desse atuador interno extra.
%Para o personagem seguindo o movimento de balançar a perna com um único pé de apoio segurando uma xícara e apoiado com os dois pés segurando duas xícaras enquanto 
%a pélvis é puxada por meio de um controlador externo a robustez do controlador de equilíbrio foi alcançada.

%\textbf{Contato Simplificado}. A principal contribuição deste trabalho é a concepção de uma estrutura desvinculada da estrutura simulada para
%o pé do personagem a fim de simular um pé mais real. Esta estrutura de contato simplificado busca uma estabilidade para o controle de equilíbrio, 
%governada pela compensação do torque aplicado do tornozelo ao pé do personagem que por sua vez irá interagir com o solo. Sem esta compensação 
%o personagem fica suscetível a instabilidades. Como foi evidenciado na inicialização do personagem, no qual ele não consegue manter-se em pé sem
%o contato simplificado. Depois de inicializado, o personagem é capaz de manter-se em pé mesmo sem a estrutura de contato simplificado. No entanto, 
%com pouca intervenção externa o equilíbrio deixa de ser um objetivo alcançável, não mantendo-se em pé, mostrando assim que o contato simplificado
%promove bons resultados que podem ser observados nos testes discutidos a seguir.

\noindent \textbf{Contato Simplificado}. Alguns testes foram realizados com o intuito de verificar especificamente a contribuição de se usar o modelo de contato simplificado proposto
(vide o vídeo de referência).
%
O primeiro teste mostra que a inicialização da simulação é bastante facilitada. Sem o modelo proposto, o animador precisaria ajustar minuciosamente a pose incial do personagem
ou usar otimização, como em \cite{bib:Geijtenbeek12}.
Além disso, pouco tempo depois de inicializado, o personagem é capaz de se estabilizar o suficiente para funcionar até mesmo sem o contato simplificado.
%
O segundo teste compara o comportamento do personagem sob intervenção externa do ambiente, com e sem o uso do contato simplificado,
comprovando novamente a estabilidade fornecida pela simplificação proposta.
%Quando a porcentagem de compensação do torque no pé está abaixo de um certo valor de tolerância, o controle de equilíbrio pode ser desligado, permitindo
%que o personagem caia mais naturalmente. Ao desligá-lo, aumentar o amortecimento nos controladores PD também ajuda a obter uma queda mais natural.
%
O terceiro teste mostra que, caso seja de sua preferência, é ainda permitido ao animador sacrificar um pouco da corretude física da simulação em
troca de uma estabilidade ainda maior, através do ajuste dos parâmetros do contato simplificado.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Discussões e Trabalhos Futuros}

%Praticidade.
A facilidade de se reproduzir movimentos capturados diretamente, sem preocupações com a estabilidade do personagem, é claramente um enorme atrativo
para os animadores que produzem jogos, filmes e ambientes virtuais em geral.
O tratamento de equilíbrio é uma das principais dificuldades ao tentar incorporar física a esses personagens.
A exigência de conhecimentos adicionais, envolvendo muitas vezes aspectos complicados de lidar, como quando usando otimização, desmotiva enormemente
o uso de física, principalmente para animadores iniciantes.
%
Acredita-se que a praticidade fornecida pelo modelo de contato simplificado proposto é a principal contribuição deste trabalho.
A estabilidade obtida aliada à facilidade de implementação da compensação do torque no pé de apoio deve incentivar ainda mais a já crescente transição %compensação artificial
entre as abordagens de animação de personagens puramente cinemáticas e as que utilizam física de alguma forma.
Este trabalho visa dar mais um passo importante na direção de transformar \emph{animadores puramente cinemáticos} em \emph{animadores dinâmicos}.

%Otimização - usar em trabalhos futuros
Por outro lado, embora o método proposto possua um apelo prático bastante útil, investir esforços para simular fielmente os aspectos morfológicos de animais em geral
(não apenas seres humanos) ainda é essencial, e obviamente merece bastante pesquisa. %esforço de pesquisa.
Nessa direção, otimização tem se mostrado cada vez mais útil \cite{bib:Nunes12} \cite{bib:Geijtenbeek12} \cite{bib:Wang12} \cite{bib:Geijtenbeek13}. %útil/necessária
Como trabalho futuro, acredita-se que o modelo proposto possa servir para melhorar o comportamento do espaço de busca, baseado no trabalho de \cite{bib:Panne95},
mas de maneira mais significativa.
A ideia seria minimizar a compensação artificial do torque no pé de apoio e obter um resultado final da otimização que funcionasse sem o contato simplificado. %compensação artificial
Ou seja, uma vez que a função de otimização estaria mais bem comportada devido à estabilidade fornecida pelo contato simplificado, o otimizador seria direcionado
por um caminho mais seguro (com menos mínimos locais) e mais curto para atingir o resultado final.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% conference papers do not normally have an appendix

% use section* for acknowledgement
\section*{Agradecimentos}

Este trabalho foi apoiado pela Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico (FUNCAP) e pela
Coordenação de Aperfeicoamento de Pessoal de Nível Superior (CAPES).


\appendix

%--------------------------------------------------------------------------------------------------------

\subsection{Vetores Espaciais 6D}\label{ap:notacao6D}

A notação de \emph{vetores espaciais 6D} é baseada em \cite{bib:Cline99,bib:NunesTese12}, e é usada em toda a formulação relacionada à Jacobiana.
Basicamente, essa notação 6D consiste em concatenar informações angulares e lineares em vetores de seis coordenadas. %concatenadas/agrupadas
A principal vantagem é que essas informações agrupadas podem ser transformadas entre sistemas de coordenadas de maneira unificada,
através do uso de \emph{matrizes de transformação adjuntas}.

Uma \emph{velocidade 6D}, também conhecida como \emph{twist}, é representada pelo vetor $\phi = (\omega^T ~ v^T)^T$,
onde $\omega$ corresponde a uma velocidade angular e $v$ corresponde a uma velocidade linear.
De maneira análoga, uma \emph{força 6D}, também conhecida como \emph{wrench}, é representada pelo
vetor $w = (\tau^T ~ f^T)^T$, onde $\tau$ corresponde a um torque e $f$ corresponde a uma força.
%Nao ficou legal mostrar vetores 6D na vertical: \left( \begin{array}{cc} \omega \\ v \end{array} \right)

Uma matriz adjunta, $^{b}_{a}Ad$, de dimensão 6$\times$6, transforma uma velocidade 6D, $^a\phi$, dada em coordenadas de $a$,
em uma velocidade 6D correspondente, $^b\phi$, dada em coordenadas de $b$: $^b\phi = {^{b}_{a}Ad} ~ ^a\phi$.
$^{b}_{a}Ad$ pode ser facilmente construída a partir da \emph{matriz de transformação homogênea} correspondente $^{b}_{a}T$:
%
\begin{equation}
 %\left( \begin{array}{c} ^{w}\omega \\ ^{w}v \end{array} \right) = _{i}^{w}Ad \left( \begin{array}{c} ^{i} \omega \\ ^{i} v \end{array} \right)
 %\quad \mathrm{, onde}\quad
 ^{b}_{a} T = \left[ \begin{array}{cc} R & p \\   0  & 1 \end{array} \right], \quad
 ^{b}_{a}Ad = \left[ \begin{array}{cc} R & 0 \\ \left[p\right]R & R \end{array} \right],
\end{equation}
%
onde $[p]$ corresponde à matriz anti-simétrica, de dimensão 3$\times$3, equivalente ao produto vetorial $p\times$:
%
\begin{equation}
 [p] = p\times = \left[ \begin{array}{ccc} 0 & -p_{z} & p_{y} \\ p_{z} & 0 & -p_{x} \\ -p_{y} & p_{x} & 0  \end{array} \right],
\end{equation}
%
onde $p_{x}$, $p_{y}$ e $p_{z}$ são as coordenadas do vetor $p$.
%
Note que a inversa transposta de $^{b}_{a}Ad$ transforma \emph{forças 6D}: $^{b}w = {^{b}_{a}Ad^{-T}} ~ ^{a}w$. %, onde $w$ representa uma força 6D.
Ou seja, sua transposta transforma \emph{forças 6D} de $b$ para $a$: $^{a}w = {^{b}_{a}Ad^{T}} ~ ^{b}w$.
%Note que $w = {\left( \begin{array}{c} \tau \\ f \end{array}  \right)}$, onde $\tau$ corresponde a um torque e $f$ corresponde a uma força.

%$\prescript{b}{a}{M}$ corresponde a uma matriz de massa, escrita em notação 6D (de dimensão 6$\time$6), que agrupa inércia $\mathcal{I}_a$ e massa $m_a$, em coordenadas de b:
A massa de um determinado sistema $a$ também pode ser definida usando essa notação 6D. Uma matriz de dimensão 6$\times$6 é usada para agrupar sua inércia $\mathcal{I}_a$ e sua massa $m_a$:
%
\begin{equation}
  \prescript{b}{a}{M} = \left[ \begin{array}{cc} {^b\mathcal{I}_a} & 0 \\ 0 & m_{a} I \end{array} \right],
  \label{eq:inerciamassa}
\end{equation}
%
onde $\prescript{b}{a}{M}$ é a \emph{massa 6D} de $a$ em coordenadas de $b$, e $I$ é a matriz identidade de dimensão 3$\times$3.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% use section* for acknowledgement
%\section*{Agradecimentos}

%The authors would like to thank...

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% trigger a \newpage just before the given reference
% number - used to balance the columns on the last page
% adjust value as needed - may need to be readjusted if
% the document is modified later
%\IEEEtriggeratref{8}
% The "triggered" command can be changed if desired:
%\IEEEtriggercmd{\enlargethispage{-5in}}

% references section

% can use a bibliography generated by BibTeX as a .bbl file
% BibTeX documentation can be easily obtained at:
% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/
% The IEEEtran BibTeX style support page is at:
% http://www.michaelshell.org/tex/ieeetran/bibtex/
%\bibliographystyle{IEEEtran}
% argument is your BibTeX string definitions and bibliography database(s)
%\bibliography{IEEEabrv,../bib/paper}
%
% <OR> manually copy in the resultant .bbl file
% set second argument of \begin to the number of references
% (used to reserve space for the reference number labels box)
%\begin{thebibliography}{1}
%
%\bibitem{IEEEhowto:kopka}
%H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
%  0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
%
%\end{thebibliography}

%--------------------------------------------------------------------------------------------------------

\bibliographystyle{IEEEtran}
\bibliography{IEEEabrv,svr_2014}

%--------------------------------------------------------------------------------------------------------

% that's all folks
\end{document}


